ffmpeg: Fix crash on some media files
authorStephan Vedder <vedder@mbits.info>
Mon, 4 Jul 2022 09:41:45 +0000 (11:41 +0200)
committerStephan Vedder <vedder@mbits.info>
Mon, 4 Jul 2022 11:29:09 +0000 (13:29 +0200)
Return code EAGAIN expects the user to feed more packets into the decoder

modules/media/gtkffmediafile.c

index 819d14d2c10aff58816272dcff87c821bc0cae0a..2210d31ddd27761b758a97aca3b35d5826169a6a 100644 (file)
@@ -292,9 +292,15 @@ gtk_ff_media_file_decode_frame (GtkFfMediaFile      *video,
           if (errnum >= 0)
             {
               errnum = avcodec_receive_frame (video->codec_ctx, frame);
+              if (errnum == AVERROR (EAGAIN))
+                {
+                  // Just retry with the next packet
+                  errnum = 0;
+                  continue;
+                }
               if (errnum < 0)
                 G_BREAKPOINT();
-              if (errnum >= 0)
+              else
                 {
                   av_packet_unref (&packet);
                   break;